package cn.teawooo.tree;

import cn.teawooo.tree.node.Node;

/**
 * 功能描述：树
 * @author teawooo <long1795@gmail.com>
 * @time 2013年8月26日 下午2:27:12
 */
public interface Tree<T extends Node<?>> {

    /**
     * 设置根节点
     * @param root 根节点
     */
    void setRoot(T root);

    /**
     * 获取根节点
     * @return 根节点
     */
    T getRoot();

    /**
     * 根据名称获取节点
     * @param name 节点名称
     * @return 节点
     */
    T getNode(String name);

    /**
     * 使用默认迭代器迭代
     */
    void iterate();

    /**
     * 使用指定迭代器迭代
     * @param iterator 迭代器
     */
    void iterate(TreeIterator<T> iterator);
}
